const state = {
  counter: 100,
  cartList: JSON.parse(localStorage.getItem('cartList') || '[]'),
};

const mutations = {
  ADD_CART(state, goodsInfo) {
    let flag = false;
    // 判断如果数据已经添加只做数量上的修改
    state.cartList.some((item) => {
      if (item.id === goodsInfo.id) {
        item.count += goodsInfo.count;
        flag = true;
      }
    });

    // 加入购物车
    if (!flag) {
      state.cartList.push(goodsInfo);
    }
    // 永久存储到本地，防止数据刷新丢失
    localStorage.setItem('cartList', JSON.stringify(state.cartList));
    // vuex 和本地存储的区别
    // vuex: 可以监听到数据的变化，但是刷新之后数据丢失
    // 本地存储：可以永久存储数据，但是无法监听到谁修改了数据
  },
  // 全选、反选
  TOGGLE_CHECKED_ALL(state, selected) {
    state.cartList.forEach((item) => {
      item.selected = selected;
    });
    // 永久存储到本地，防止数据刷新丢失
    localStorage.setItem('cartList', JSON.stringify(state.cartList));
  },
};

const actions = {};

const getters = {
  getAllCount(state) {
    let c = 0;
    state.cartList.forEach((item) => {
      c += item.count;
    });
    return c;
  },
  getAllPrice() {
    let p = 0;
    state.cartList.forEach((item) => {
      if (item.selected) {
        p += item.count * item.price;
      }
    });
    return p;
  },
  getCheckboxAll(state) {
    return state.cartList.every((item) => item.selected);
  },
};

export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters,
};
